﻿using System.Collections.Generic;
using UnityEngine;
namespace Framework.Entity
{
    /// <summary>
    /// 实体管理器接口
    /// </summary>
    public interface IEntityManager {
        /// <summary>
        /// 添加实体
        /// </summary>
        /// <param name="entity">要添加的实体</param>
        void AddEntity( IEntity entity );
        /// <summary>
        /// 删除实体
        /// </summary>
        /// <param name="entity">要删除的实体</param>
        void RemoveEntity( IEntity entity );
        /// <summary>
        /// 显示实体
        /// </summary>
        /// <param name="entity">要显示的实体</param>
        void ShowEntity( IEntity entity );
        /// <summary>
        /// 隐藏实体
        /// </summary>
        /// <param name="entity">要隐藏的实体</param>
        void HideEntity( IEntity entity );

        /// <summary>
        /// 获取实体
        /// </summary>
        /// <param name="entity">要显示的实体</param>
        IEntity Get( uint id );

        Transform ObjTransform(uint shipID);

        void LerpForwardLocalRotation(Transform curTrans, Vector3 targetForward, float factor0 = 45.0f, float factor1 = 1.0f);
        void LerpForwardLocalRotation(Transform curTrans, Quaternion quatTarget, float factor0 = 45.0f, float factor1 = 1.0f);
        float LerpPosition(Transform curTrans, Vector3 targetPosition, float factor0 = 10.0f, float factor1 = 1.0f);

        LinkedList<IEntity> Entitys();
    }
}
